#region << 版 本 注 释 >>
/*----------------------------------------------------------------
 * 版权所有 (c) 2025   保留所有权利。
 * CLR版本：4.0.30319.42000
 * 机器名称：DESKTOP-GLJ2Q8J
 * 公司名称：
 * 命名空间：Npoi.ExcelOperate
 * 唯一标识：ca26f371-7294-4946-abe7-1681ce82f23f
 * 文件名：NpoiExtension
 * 当前用户域：DESKTOP-GLJ2Q8J
 * 
 * 创建者： Guo_79991
 * 电子邮箱：799919859@qq.com
 * 创建时间：2025/10/9 13:47:39
 * 版本：V1.0.0
 * 描述：
 *
 * ----------------------------------------------------------------
 * 修改人：
 * 时间：
 * 修改说明：
 *
 * 版本：V1.0.1
 *----------------------------------------------------------------*/
#endregion << 版 本 注 释 >>

using NPOI.SS.UserModel;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace Npoi.ExcelOperate
{
    /// <summary>
    /// Npoi扩展方法
    /// </summary>
    public static class NpoiExtension
    {
        /// <summary>
        /// 如果单元格为空则先设置单元格
        /// 并把单元格的样式设置为与源单元格相同的样式
        /// </summary>
        /// <param name="row">行</param>
        /// <param name="cellIndex">单元格索引</param>
        /// <param name="sourceCell">源单元格,可以为空</param>
        /// <returns>单元格</returns>
        public static ICell GetCellIfNull(this IRow row, int cellIndex, ICell sourceCell = null)
        {
            var cell = row.GetCell(cellIndex);
            if (cell == null)
            {
                row.CreateCell(cellIndex);
                cell = row.GetCell(cellIndex);
                if (sourceCell != null)
                {
                    cell.CellStyle = sourceCell.CellStyle;
                }
            }
            return cell;
        }
        /// <summary>
        /// 与上方单元格相同
        /// </summary>
        /// <param name="sheet">sheet页</param>
        /// <param name="rowindex">行索引</param>
        /// <param name="sourceRow">源行,可为空</param>
        /// <returns></returns>
        public static IRow GetRowIfNull(this ISheet sheet, int rowindex, IRow sourceRow = null)
        {
            var row = sheet.GetRow(rowindex);
            if (row == null)
            {
                sheet.CreateRow(rowindex);
                row = sheet.GetRow(rowindex);
                if (sourceRow != null)
                {
                    row.RowStyle = sourceRow.RowStyle;
                    //设置高度(Excel高度根据Twips缇(打印单位))
                    row.Height = sourceRow.Height;
                }
            }
            return row;
        }
        /// <summary>
        /// 根据sheet页对象删除sheet页
        /// </summary>
        /// <param name="workbook"></param>
        /// <param name="sheet"></param>
        public static void RemoveSheet(this IWorkbook workbook, ISheet sheet)
        {
            //获取Sheet对象的索引值
            var sheetIndex = workbook.GetSheetIndex(sheet);
            if (sheetIndex >= 0)
            {
                //根据索引删除Sheet页
                workbook.RemoveSheetAt(sheetIndex);
            }
        }
    }
}
